hmpo-model
- localModel - Simple model for data persistance
- remoteModel - Simple model for interacting with http/rest apis.
Local Model Usage
get
- gets a model property via a key
set
- sets a property on the model to a value and dispatches events
unset
reset
- resets a model
- suppresses
change
event notifications if options.silent
is set
increment
toJSON
- returns a JSON representation of the data in the model
Remote Model Usage
Normally this would be used as an abstract class and extended with your own implementation.
Implementations would normally define at least a url
method to define the target of API calls.
There are three methods for API interaction corresponding to GET, POST, and DELETE http methods:
fetch
var model = new Model();
model.fetch(function (err, data, responseTime) {
console.log(data);
});
save
var model = new Model();
model.set({
property: 'properties are sent as JSON request body by default'
});
model.save(function (err, data, responseTime) {
console.log(data);
});
The method can also be overwritten by passing options
var model = new Model();
model.set({
property: 'this will be sent as a PUT request'
});
model.save({ method: 'PUT' }, function (err, data, responseTime) {
console.log(data);
});
delete
var model = new Model();
model.delete(function (err, data) {
console.log(data);
});
If no url
method is defined then the model will use the options parameter and Node's url.format method to construct a URL.
var model = new Model();
model.fetch({
protocol: 'http',
hostname: 'example.com',
port: 3000,
path: '/foo/bar'
}, function (err, data, responseTime) {
console.log(data);
});
Events
API requests will emit events as part of their lifecycle.
sync
is emitted when an API request is sent
model.on('sync', function (settings) { });
success
is emitted when an API request successfully completes
model.on('success', function (data, settings, statusCode, responseTime) { });
fail
is emitted when an API request fails
model.on('fail', function (err, data, settings, statusCode, responseTime) { });
Hooks
API requests will fire hooks specified in model options as part of their lifecycle.
new Model(null, options);
sync
hook is fired when an API request is sent
options.hooks.sync({ settings });
success
hook is fired when an API request successfully completes
options.hooks.success({ data, settings, statusCode, responseTime });
fail
hook is fired when an API request fails
options.hooks.fail({ err, data, settings, statusCode, responseTime });